class Rectangle(object):
  def __init__(self):
    self.width =10
    self.height=20
r=Rectangle()
print(r.width,r.height)

# 以上弊端调用后容易被修改参数因为不是私有的


class Rectangle(object):
    @property
    def width(self):
        # 变量名不与方法名重复，改为true_width，下同
        return self.true_width

    @property
    def height(self):
        return self.true_height


s = Rectangle()
# 与方法名一致
s.width = 1024
s.height = 768
print(s.width, s.height)




class Rectangle(object):
  @property
  def width(self):
    # 变量名不与方法名重复，改为true_width，下同
    return self.true_width
  @width.setter
  def width(self, input_width):
    self.true_width = input_width
  @property
  def height(self):
    return self.true_height
  @height.setter
  #与property定义的方法名要一致
  def height(self, input_height):
    self.true_height = input_height
s = Rectangle()
# 与方法名一致
s.width = 1024
s.height = 768
print(s.width,s.height)


"""
1、dir() 查看对象属性和方法
2、type()查看对象类型
3、help()查看对象方法和属性详细信息
4、__dict__查看对象属性
5、__gatattr__函数获取对象属性
"""